Apache NiFi একটি শক্তিশালী ডেটা ফ্লো ম্যানেজমেন্ট টুল, যা ব্যবহারকারীদের তাদের ডেটা প্রোসেসিং চাহিদা অনুযায়ী Custom Processor তৈরি করার অনুমতি দেয়। NiFi এর বিল্ট-ইন প্রসেসরগুলি সাধারণ ডেটা ট্রান্সফার এবং প্রোসেসিং কাজের জন্য কার্যকরী হলেও, বিশেষ বা কাস্টম কাজের জন্য Custom Processor ডেভেলপমেন্ট প্রয়োজন হতে পারে। এই কাস্টম প্রসেসরগুলিকে NiFi এ ইন্টিগ্রেট করার মাধ্যমে আরও নির্দিষ্ট এবং স্কেলেবল ডেটা ফ্লো তৈরি করা যায়।
NiFi তে একটি Custom Processor তৈরি করার জন্য, আপনাকে Java Programming এর মাধ্যমে প্রসেসর কোড লিখতে হবে এবং তারপর এটি NiFi এ ইনস্টল করতে হবে। NiFi এ Custom Processor তৈরি করতে হলে, Java ব্যবহার করে NiFi API এবং NiFi SDK (Software Development Kit) এর সাহায্যে প্রসেসর ডিজাইন করতে হয়।
Custom Processor তৈরি করতে নিচের প্রাথমিক ধাপগুলো অনুসরণ করতে হবে:
NiFi তে Custom Processor তৈরি করতে আপনাকে AbstractProcessor
ক্লাসটি এক্সটেন্ড করতে হবে। এই ক্লাসটি ব্যবহারকারীকে প্রসেসরের কনফিগারেশন এবং ডেটা প্রসেসিং কার্যক্রম নির্ধারণ করতে সাহায্য করে।
এখানে একটি সাধারণ Custom Processor ক্লাসের উদাহরণ দেওয়া হলো:
import org.apache.nifi.annotation.behavior.TriggerWhenEmpty;
import org.apache.nifi.annotation.behavior.InputRequirement;
import org.apache.nifi.annotation.lifecycle.OnScheduled;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.Processor;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.io.InputStreamCallback;
import org.apache.nifi.processor.io.OutputStreamCallback;
import org.apache.nifi.stream.io.StreamUtils;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.processor.util.StandardValidators;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.ArrayList;
@TriggerWhenEmpty
@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED)
public class CustomProcessor extends AbstractProcessor {
private static final PropertyDescriptor MY_PROPERTY = new PropertyDescriptor
.Builder().name("My Custom Property")
.description("An example custom property")
.required(true)
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
.build();
@Override
public void onTrigger(ProcessContext context, ProcessSession session) {
// Custom logic for the processor
try {
// Example to process incoming FlowFile
FlowFile flowFile = session.get();
if (flowFile == null) {
return;
}
// Processing logic here
session.transfer(flowFile, REL_SUCCESS);
} catch (Exception e) {
getLogger().error("Error in processing", e);
}
}
@Override
public List<PropertyDescriptor> getSupportedPropertyDescriptors() {
List<PropertyDescriptor> properties = new ArrayList<>();
properties.add(MY_PROPERTY);
return properties;
}
@OnScheduled
public void onScheduled(ProcessContext context) {
// This method is called when the processor is scheduled
}
}
onTrigger
: এটি হল প্রসেসরের মূল কার্যকরী মেথড যা প্রতি সময় ট্রিগার হওয়ার সময় চালিত হয়।getSupportedPropertyDescriptors
: এই মেথডে আপনি প্রসেসরের কনফিগারেশন বা প্রোপার্টি গুলি নির্ধারণ করেন। উদাহরণস্বরূপ, আপনি যে প্রোপার্টি নিতে চান তা এখানে অন্তর্ভুক্ত করতে পারেন।@OnScheduled
: এটি একটি লাইফসাইকেল মেথড যা প্রসেসরটি সক্রিয় করার সময় একটি এক্সিকিউশন ব্লক চালু করতে সহায়ক।Custom Processor তৈরি করতে Maven ব্যবহার করা হয়। Maven এর মাধ্যমে আপনি NiFi SDK ডিপেনডেন্সি যুক্ত করে এবং আপনার Custom Processor ডেভেলপ করতে পারেন।
pom.xml
ফাইলে NiFi ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<version>1.12.1</version> <!-- Use appropriate version -->
</dependency>
প্রজেক্টটি তৈরি হওয়ার পরে, Maven ব্যবহার করে এটি কম্পাইল করতে হবে:
mvn clean install
এটি একটি .nar
(NiFi Archive) ফাইল তৈরি করবে যা NiFi তে ইন্সটল এবং ডেপ্লয় করা যাবে।
NiFi তে Custom Processor ইনস্টল করতে, .nar
ফাইলটি NiFi ইনস্টলেশনের lib
ডিরেক্টরিতে কপি করতে হবে। তারপর NiFi সার্ভার রিস্টার্ট করলে এটি প্রসেসরটি NiFi UI তে প্রদর্শিত হবে এবং ব্যবহারযোগ্য হবে।
NiFi তে Custom Processor তৈরি করার পর সেটি সঠিকভাবে কাজ করছে কিনা, তা নিশ্চিত করতে কিছু ধাপ অনুসরণ করতে হবে:
Apache NiFi তে Custom Processor Development একটি শক্তিশালী বৈশিষ্ট্য যা ব্যবহারকারীদের তাদের নির্দিষ্ট ডেটা প্রোসেসিং চাহিদা অনুযায়ী প্রসেসর তৈরি করতে সাহায্য করে। এটি Java প্রোগ্রামিং ব্যবহার করে NiFi API এবং SDK এর মাধ্যমে তৈরি করা হয়। Custom Processor তৈরি করার মাধ্যমে, আপনি NiFi এর ডিফল্ট প্রসেসরের বাইরে আপনার নিজস্ব প্রোসেসিং লজিক প্রয়োগ করতে পারবেন, যা আপনার ডেটা ফ্লো ব্যবস্থাপনাকে আরও শক্তিশালী এবং লাস্টমাইজড করে তোলে।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ফ্লো অটোমেশন প্ল্যাটফর্ম যা ডেটার সংগ্রহ, প্রক্রিয়া এবং স্থানান্তর সহজ এবং কার্যকরী করে তোলে। নিফাই প্রোসেসর (Processor) হল এর মূল উপাদান, যা ডেটা প্রোসেসিংয়ের কাজগুলো পরিচালনা করে। প্রাথমিকভাবে, নিফাই বেশ কিছু বিল্ট-ইন প্রোসেসরের সাহায্যে ডেটা ফ্লো তৈরি এবং পরিচালনা করতে সক্ষম, তবে কখনো কখনো বিশেষ ধরনের ডেটা প্রোসেসিং প্রয়োজন হতে পারে, যা নিফাইয়ের স্ট্যান্ডার্ড প্রোসেসরগুলো পূরণ করতে পারে না। এই পরিস্থিতিতে Custom Processor তৈরি করা হয়।
Custom Processor হল একটি কাস্টম-ডেভেলপড প্রোসেসর যা নিফাইয়ের ডিফল্ট প্রোসেসরগুলোর বাইরে কোনো নির্দিষ্ট ফিচার বা প্রোসেসিং কনফিগারেশন সম্পাদন করতে ব্যবহৃত হয়। এটি একটি ইউজার-ডিফাইন্ড প্রোসেসর, যার মাধ্যমে ব্যবহারকারী তাদের নির্দিষ্ট প্রোসেসিং প্রয়োজনীয়তা পূরণ করতে পারে। কাস্টম প্রোসেসর মূলত Java ভাষায় ডেভেলপ করা হয় এবং নিফাই-এর প্লাগইন আর্কিটেকচারের মাধ্যমে এটি নিফাই ফ্লোতে সংযুক্ত করা যায়।
Custom Processor তৈরি করতে হলে, আপনাকে নিফাই ফ্রেমওয়ার্ক ব্যবহার করে একটি নতুন প্রোসেসর ক্লাস ডেভেলপ করতে হবে, যেটি নির্দিষ্ট কার্যকলাপ সম্পাদন করবে, যেমন:
নিফাই একটি অত্যন্ত শক্তিশালী প্ল্যাটফর্ম হলেও, কখনো কখনো স্ট্যান্ডার্ড প্রোসেসরগুলো আপনার নির্দিষ্ট প্রোসেসিং প্রয়োজনীয়তা পূর্ণ করতে পারে না। এখানে Custom Processor তৈরির কয়েকটি গুরুত্বপূর্ণ কারণ আলোচনা করা হলো:
অনেক সময় নির্দিষ্ট ধরনের ডেটা প্রোসেসিংয়ের জন্য নিফাইয়ের বিল্ট-ইন প্রোসেসরগুলো যথেষ্ট নয়। যেমন, যদি আপনি একটি নির্দিষ্ট প্রোটোকল ব্যবহার করে ডেটা এক্সট্র্যাক্ট করতে চান বা কোনো বিশেষ ফাইল ফরম্যাটে ডেটা প্রসেস করতে চান, তাহলে কাস্টম প্রোসেসর তৈরি করা হতে পারে।
উদাহরণস্বরূপ:
যদি আপনি নিফাইকে কোনো তৃতীয় পক্ষের সিস্টেম বা সেবা (যেমন আপনার নিজস্ব ডাটাবেস, মেসেজ কিউ, বা API) এর সাথে ইন্টিগ্রেট করতে চান, তবে কাস্টম প্রোসেসর তৈরি করা প্রয়োজন। উদাহরণস্বরূপ, একটি কাস্টম প্রোসেসর দিয়ে আপনি একটি নিজস্ব ডাটাবেস সার্ভার থেকে ডেটা পড়তে বা লিখতে পারেন।
কিছু বিশেষ ধরনের ডেটা প্রোসেসিংয়ের জন্য পারফরম্যান্স অপটিমাইজেশন প্রয়োজন হতে পারে। স্ট্যান্ডার্ড প্রোসেসরের তুলনায়, একটি কাস্টম প্রোসেসর আপনার নির্দিষ্ট কাজের জন্য আরও অপটিমাইজড হতে পারে, যা কম রিসোর্স ব্যবহার করে দ্রুত কাজ করতে পারে।
যদি আপনার সিস্টেমে নির্দিষ্ট নিরাপত্তা বা অথেনটিকেশন চাহিদা থাকে, যেমন একটি কাস্টম অথেনটিকেশন সিস্টেম বা এনক্রিপশন পদ্ধতি, তবে সেই নিরাপত্তা ব্যবস্থা কার্যকর করার জন্য কাস্টম প্রোসেসর দরকার হতে পারে।
নিফাইয়ে বেশ কিছু স্ট্যান্ডার্ড ডেটা ট্রান্সফরমেশন প্রোসেসর থাকলেও, কখনো কখনো আপনাকে বিশেষ কোনো কাস্টম ট্রান্সফরমেশন করতে হতে পারে, যা নিফাইয়ের পূর্বনির্ধারিত প্রোসেসর দিয়ে সম্ভব নয়। এমন ক্ষেত্রে কাস্টম প্রোসেসর তৈরি করা দরকার।
কাস্টম প্রোসেসর তৈরি করতে প্রথমেই একটি Java ডেভেলপমেন্ট এনভায়রনমেন্ট প্রস্তুত করতে হবে। নিফাই-এর API এবং SDK ব্যবহার করে একটি নতুন Java প্রজেক্ট তৈরি করুন।
Java ভাষায় AbstractProcessor
ক্লাস ইনহেরিট করে কাস্টম প্রোসেসর তৈরি করতে হবে। এতে আপনার প্রোসেসরের কার্যাবলী, ইনপুট ও আউটপুট পোর্ট এবং প্রপার্টি কনফিগারেশন থাকবে।
উদাহরণ:
public class MyCustomProcessor extends AbstractProcessor {
@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) {
// Custom processing logic here
}
}
কাস্টম প্রোসেসর ডেভেলপ করার পর, এটি একটি JAR ফাইল হিসেবে প্যাকেজ করে নিফাই সিস্টেমে ডিপ্লয় করতে হবে। এই JAR ফাইলটি নিফাইয়ের lib
ফোল্ডারে কপি করতে হবে, তারপর নিফাই রিস্টার্ট করা হবে।
একবার প্রোসেসর তৈরি হয়ে গেলে, আপনি নিফাই UI এর মাধ্যমে নতুন প্রোসেসরটি ড্র্যাগ-এন্ড-ড্রপ করে ফ্লো ডিজাইন করতে পারবেন।
Custom Processor নিফাইয়ের একটি অত্যন্ত গুরুত্বপূর্ণ এবং উপকারী বৈশিষ্ট্য যা ব্যবহারকারীদের তাদের নির্দিষ্ট প্রোসেসিং চাহিদা অনুযায়ী কাস্টম প্রোসেসর তৈরি করতে সাহায্য করে। এটি বিশেষভাবে তখন প্রয়োজন হয়, যখন নিফাইয়ের বিল্ট-ইন প্রোসেসরগুলোর মাধ্যমে ডেটা ফ্লো ম্যানেজমেন্ট করা সম্ভব না হয়। কাস্টম প্রোসেসরের মাধ্যমে আপনি বিভিন্ন বিশেষ প্রক্রিয়া, নিরাপত্তা ব্যবস্থা, পারফরম্যান্স অপটিমাইজেশন, এবং নির্দিষ্ট ডেটা ফরম্যাটের জন্য নিফাইকে কাস্টমাইজ করতে পারেন।
অ্যাপাচি নিফাই (Apache NiFi) আপনাকে কাস্টম প্রোসেসর (Custom Processor) তৈরি করার সুযোগ দেয়, যা আপনার নির্দিষ্ট ডেটা প্রোসেসিং চাহিদা পূরণের জন্য কাজ করতে পারে। NiFi প্রোসেসরগুলি Java ভিত্তিক এবং আপনি যদি কোনো নির্দিষ্ট ডেটা প্রক্রিয়া করতে চান যা NiFi-এর বিল্ট-ইন প্রোসেসর দ্বারা সমর্থিত নয়, তবে কাস্টম প্রোসেসর তৈরি করা একটি উপযুক্ত সমাধান হতে পারে। এই গাইডে, আমরা NiFi-তে কাস্টম প্রোসেসর ডেভেলপমেন্ট (Java) সম্পর্কিত প্রক্রিয়া এবং পদক্ষেপগুলো বিস্তারিতভাবে আলোচনা করব।
কাস্টম প্রোসেসর তৈরি করতে, আপনাকে Java এবং NiFi-এর SDK (Software Development Kit) সম্পর্কে কিছু ধারণা থাকতে হবে। এছাড়া Maven এবং Java Development Kit (JDK) ইনস্টল করা থাকতে হবে।
NiFi এর কাস্টম প্রোসেসর তৈরি করার জন্য NiFi SDK ব্যবহার করতে হবে। এটি আপনাকে Java ক্লাস তৈরি, প্রোসেসর কনফিগার এবং কোড লেখার জন্য সহায়তা করবে।
NiFi SDK প্রোজেক্ট তৈরি করা: আপনি Maven বা Gradle ব্যবহার করে একটি নতুন প্রোজেক্ট তৈরি করতে পারেন।
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<version>1.14.0</version> <!-- NiFi version-->
</dependency>
NiFi SDK মাভেন প্রকল্পের জন্য সেটআপ: Maven প্রোজেক্ট তৈরি করুন এবং pom.xml
ফাইলের মধ্যে নিচের ডিপেনডেন্সি যোগ করুন।
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<version>1.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-processor-api</artifactId>
<version>1.14.0</version>
</dependency>
</dependencies>
NiFi-তে কাস্টম প্রোসেসর তৈরি করার জন্য, আপনাকে NiFi এর প্রোসেসর API ক্লাস ব্যবহার করতে হবে। একটি সাধারণ কাস্টম প্রোসেসরের জন্য একটি Java ক্লাস তৈরি করতে হবে যা AbstractProcessor
ক্লাস বা AbstractSession
ইন্টারফেসকে এক্সটেন্ড করবে।
package com.example.nifi.processor;
import org.apache.nifi.annotation.behavior.TriggerWhenEmpty;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.flowfile.FlowFile;
import org.apache.nifi.annotation.lifecycle.OnScheduled;
import org.apache.nifi.annotation.lifecycle.OnStopped;
@TriggerWhenEmpty
public class CustomProcessor extends AbstractProcessor {
@Override
protected void init(final ProcessorInitializationContext context) {
// Initialization code here
}
@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
FlowFile flowFile = session.get();
if (flowFile != null) {
// Add your processing logic here
getLogger().info("Processing flowfile: " + flowFile.getAttribute("filename"));
session.transfer(flowFile, REL_SUCCESS);
}
}
@OnScheduled
public void onScheduled(final ProcessContext context) {
// Code to execute when the processor is scheduled
}
@OnStopped
public void onStopped() {
// Code to execute when the processor is stopped
}
}
কাস্টম প্রোসেসরের জন্য ইনপুট এবং আউটপুট রিলেশনশিপ (relationships) নির্ধারণ করতে হবে। NiFi প্রোসেসর বিভিন্ন স্টেট বা রিলেশনশিপ দ্বারা ট্রান্সফার করা ফ্লোফাইলগুলিকে নিয়ন্ত্রণ করে।
public static final Relationship REL_SUCCESS = new Relationship.Builder()
.name("success")
.description("Successfully processed flow files")
.build();
public static final Relationship REL_FAILURE = new Relationship.Builder()
.name("failure")
.description("Failed to process flow files")
.build();
@Override
public Set<Relationship> getRelationships() {
return Collections.singleton(REL_SUCCESS);
}
প্রোসেসর সাধারণত কনফিগারেবল প্রপার্টির মাধ্যমে কাস্টমাইজ করা যায়। NiFi প্রোসেসর কনফিগারেশনে প্রপার্টি ঘোষণা করতে @Property
অ্যাট্রিবিউট ব্যবহার করা হয়।
@Property(
name = "outputDirectory",
description = "Directory to write the output files",
defaultValue = "/tmp/output"
)
private String outputDirectory;
Builidng the Processor: একবার কাস্টম প্রোসেসরের কোড লেখা হয়ে গেলে, Maven বা অন্য কোন বিল্ড টুল ব্যবহার করে আপনার প্রোজেক্ট বিল্ড করুন।
mvn clean install
.nar
(NiFi Archive) ফাইল তৈরি হবে যা NiFi-তে ইনস্টল করা যাবে।.nar
ফাইলটি NiFi এর lib
ডিরেক্টরিতে কপি করুন এবং NiFi সার্ভিস রিস্টার্ট করুন।NiFi UI তে কাস্টম প্রোসেসর ডিপ্লয় করার পরে, আপনাকে সেগুলির কার্যকারিতা নিশ্চিত করতে হবে। NiFi তে লগিং ব্যবস্থাও আছে, যা ডিবাগিং এবং মনিটরিং এর জন্য খুবই সহায়ক।
getLogger().info("Custom Processor executed successfully");
অ্যাপাচি নিফাই তে কাস্টম প্রোসেসর ডেভেলপমেন্ট আপনাকে নির্দিষ্ট ডেটা প্রক্রিয়াগুলির জন্য প্রোসেসর তৈরি করার সুযোগ দেয়, যা নিফাইয়ের বিল্ট-ইন প্রোসেসরগুলি দ্বারা সমর্থিত নয়। Java ভিত্তিক কাস্টম প্রোসেসর তৈরি করতে আপনাকে NiFi এর SDK ব্যবহার করতে হবে, প্রোসেসরের ইনপুট এবং আউটপুট সম্পর্ক, প্রপার্টি কনফিগারেশন এবং অন্যান্য কাস্টম লজিক যুক্ত করতে হবে। একবার প্রোসেসর তৈরি হয়ে গেলে, আপনি এটি NiFi UI তে ব্যবহার এবং পরীক্ষণ করতে পারবেন, যা আপনার ডেটা প্রোসেসিং কাজকে আরও কার্যকরী এবং কাস্টমাইজড করে তোলে।
অ্যাপাচি নিফাই (Apache NiFi) একটি অত্যন্ত নমনীয় এবং প্রসারযোগ্য ডেটা ইন্টিগ্রেশন টুল, যা বিভিন্ন ধরনের ডেটা প্রোসেসিং কার্যক্রম সম্পাদন করতে পারে। নিফাইয়ের Extension API এবং Custom Processor Integration এর মাধ্যমে আপনি কাস্টম প্রোসেসর তৈরি করতে পারেন, যা আপনার সুনির্দিষ্ট ডেটা প্রোসেসিং চাহিদা পূরণে সহায়ক হতে পারে। নিফাইয়ের এক্সটেনশন API-এর মাধ্যমে ব্যবহারকারীরা নতুন প্রোসেসর, সার্ভিস, বা অন্যান্য এক্সটেনশন তৈরি করতে পারে, যা নিফাইয়ের বিদ্যমান ফিচারগুলির সঙ্গে একত্রিত হয়।
এই গাইডে, আমরা NiFi Extension API এবং Custom Processor Integration এর ব্যবহার এবং কনফিগারেশন নিয়ে বিস্তারিতভাবে আলোচনা করব।
অ্যাপাচি নিফাই Extension API একটি শক্তিশালী ফিচার যা আপনাকে নিফাইয়ের জন্য কাস্টম এক্সটেনশন তৈরি করতে সক্ষম করে। এক্সটেনশনগুলি প্রোসেসর, কনট্রোলার সার্ভিস, রিপোর্টিং টাস্ক, এবং অন্যান্য বিভিন্ন উপাদান হতে পারে।
AbstractProcessor
ক্লাস ব্যবহার করবেন, যা নিফাইয়ের ডেটা প্রোসেসিং কাজের জন্য বেস ফাংশনালিটি সরবরাহ করে। কাস্টম প্রোসেসর তৈরি করতে আপনাকে প্রাথমিকভাবে @Tags, @InputRequirement, @CapabilityDescription ইত্যাদি এনোটেশন ব্যবহার করতে হবে।AbstractControllerService
ক্লাস ব্যবহার করা হয়।AbstractProcessor
অথবা Processor
ইন্টারফেস ইমপ্লিমেন্ট করে কাস্টম প্রোসেসর তৈরি করা হয়।AbstractControllerService
বা ControllerService
ইন্টারফেস কাস্টম কনট্রোলার সার্ভিস তৈরির জন্য।AbstractReportingTask
ইন্টারফেস ব্যবহার করে কাস্টম রিপোর্টিং টাস্ক তৈরি করা হয়।কাস্টম প্রোসেসর ইন্টিগ্রেশন নিফাই প্ল্যাটফর্মে নতুন ফাংশনালিটি যোগ করতে সাহায্য করে। যখন আপনাকে বিদ্যমান প্রোসেসরের বাইরে কিছু কাস্টম ফিচার প্রয়োজন হয়, তখন কাস্টম প্রোসেসর তৈরি করা উপকারী।
Maven প্রোজেক্ট তৈরি করা:
নিফাই প্রোসেসর তৈরি করতে হলে, আপনাকে প্রথমে একটি Maven প্রোজেক্ট তৈরি করতে হবে এবং এর মধ্যে নিফাই সম্পর্কিত ডিপেনডেন্সি যোগ করতে হবে। উদাহরণস্বরূপ:
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<version>1.x.x</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-processor-api</artifactId>
<version>1.x.x</version>
</dependency>
Processor কোড লেখা:
কাস্টম প্রোসেসর কোডে আপনাকে AbstractProcessor
ক্লাসটি ইমপ্লিমেন্ট করতে হবে। এখানে একটি সাধারণ কাস্টম প্রোসেসর উদাহরণ দেওয়া হলো:
public class MyCustomProcessor extends AbstractProcessor {
@Override
public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException {
// আপনার প্রোসেসিং কোড
FlowFile flowFile = session.get();
if (flowFile == null) {
return;
}
// ডেটা প্রক্রিয়া করা
session.transfer(flowFile, SUCCESS);
}
}
এখানে onTrigger
মেথডে, আপনার প্রোসেসরের কার্যকারিতা থাকবে, যেখানে আপনি FlowFile
গ্রহণ করে তাকে প্রক্রিয়া করবেন।
কাস্টম প্রোসেসর কনফিগারেশন:
কাস্টম প্রোসেসরের কনফিগারেশন এবং প্রপার্টি চেক করতে হবে। সাধারণত, @InputRequirement
এবং @Property
এনোটেশন ব্যবহার করা হয়:
@Property(label = "Property", description = "This is a custom property")
private String propertyValue;
ফাইল বিল্ড এবং JAR তৈরি:
Maven ব্যবহার করে আপনার প্রোজেক্টটি বিল্ড করুন এবং JAR ফাইল তৈরি করুন:
mvn clean install
JAR ফাইল নিফাইয়ে ডিপ্লয়:
তৈরি হওয়া JAR ফাইলটি নিফাইয়ের lib
ডিরেক্টরিতে কপি করুন:
cp target/my-custom-processor-1.0.jar /opt/nifi/lib/
নিফাই সার্ভিস রিস্টার্ট করুন:
JAR ফাইল ডিপ্লয় করার পর নিফাই সার্ভিস পুনরায় চালু করতে হবে:
./bin/nifi.sh restart
অ্যাপাচি নিফাইয়ের NiFi Extension API এবং Custom Processor Integration নিফাইয়ের ক্ষমতাকে ব্যাপকভাবে প্রসারিত করে। আপনি কাস্টম প্রোসেসর তৈরি করতে এবং নিফাইয়ের প্ল্যাটফর্মে নতুন কার্যকারিতা যুক্ত করতে পারেন, যা ডেটা ফ্লো প্রক্রিয়া এবং স্কেলেবিলিটিকে আরও উন্নত করতে সহায়ক। Maven ব্যবহার করে কাস্টম প্রোসেসর তৈরি এবং নিফাইতে ইন্টিগ্রেট করা একটি সহজ প্রক্রিয়া, যা আপনার সুনির্দিষ্ট ডেটা প্রক্রিয়া চাহিদা পূরণে সাহায্য করে।
অ্যাপাচি নিফাই (Apache NiFi) একটি অত্যন্ত কাস্টমাইজেবল প্ল্যাটফর্ম, যেখানে ব্যবহারকারীরা তাদের নিজস্ব Custom Processors তৈরি করে বিশেষ ডেটা প্রোসেসিং এবং ট্রান্সফরমেশন কার্যক্রম পরিচালনা করতে পারেন। NiFi এর কাস্টম প্রোসেসরগুলির মাধ্যমে প্রক্রিয়াকরণ বা ডেটা ফ্লো আরও নির্দিষ্ট এবং কার্যকরী করা যায়। তবে, কাস্টম প্রোসেসর তৈরি করার সময় কিছু Best Practices মেনে চলা উচিত যাতে এগুলি স্কেলেবল, পুনঃব্যবহারযোগ্য, এবং পরিচালনাযোগ্য থাকে।
প্রথমত, কাস্টম প্রোসেসর তৈরি করার আগে এর উদ্দেশ্য এবং কার্যক্রম পরিষ্কারভাবে নির্ধারণ করুন। একটি পরিষ্কার ডিজাইন আপনাকে কোডের মধ্যে মডুলারিটি বজায় রাখতে সহায়ক হবে।
প্রোসেসরের লজিক এবং ডেটা স্টোরেজ বা অন্যান্য প্রক্রিয়াকরণ সম্পর্কিত কার্যক্রম পৃথক করুন। এটি দীর্ঘমেয়াদে মেইনটেনেন্স এবং ডিবাগিং সহজ করে।
প্রোসেসর ডিজাইন করার সময় ত্রুটি হ্যান্ডলিং একটি গুরুত্বপূর্ণ দিক। যদি কোনো প্রোসেসরের মধ্যে ত্রুটি ঘটে, তাহলে সেই ত্রুটির সঠিক রিপোর্টিং এবং পুনরুদ্ধারের ব্যবস্থা করা উচিত।
NiFi এর logback.xml কনফিগারেশন ব্যবহার করে কাস্টম লগিং তৈরি করুন।
একটি কাস্টম প্রোসেসর তৈরি করার সময়, আপনি যাতে প্রোসেসরের সময় এবং রিসোর্স ব্যবহার যতটা সম্ভব কম করেন তা নিশ্চিত করুন।
প্রোসেসরগুলি থ্রেড-সেফ হতে হবে যাতে এটি একাধিক থ্রেড দ্বারা একসাথে সঞ্চালিত হতে পারে, বিশেষত যখন আপনি NiFi ক্লাস্টারে কাজ করছেন।
NiFi-এর প্রস্তুতকৃত Standard Processor API এবং অন্যান্য সিস্টেমগুলির সাথে ইন্টিগ্রেশন করা উচিত।
onTrigger()
, onScheduled()
ইত্যাদি সঠিকভাবে বাস্তবায়ন করুন।প্রোসেসরের লজিকাল পার্টের জন্য ইউনিট টেস্ট তৈরি করুন। NiFi এর JUnit সমর্থন ব্যবহার করে আপনার প্রোসেসরের কোড ইউনিট টেস্টিং নিশ্চিত করুন।
কাস্টম প্রোসেসরটি নিফাই সিস্টেমের সাথে একীভূত হওয়ার পর পুরো সিস্টেমের সঠিক কার্যক্ষমতা যাচাই করতে Integration Testing পরিচালনা করুন।
আপনার কাস্টম প্রোসেসরের কনফিগারেশন, ব্যবহারের উদাহরণ এবং প্রয়োজনীয় ডিপেনডেন্সির জন্য সঠিক ডকুমেন্টেশন তৈরি করুন। এটি বিশেষ করে কোড রিভিউ এবং রক্ষণাবেক্ষণ সহজ করে।
Git বা অন্যান্য ভার্সন কন্ট্রোল সিস্টেম ব্যবহার করুন এবং কাস্টম প্রোসেসর কোডের সমস্ত পরিবর্তন ট্র্যাক করুন।
NiFi-তে Custom Processors তৈরি করার সময় Best Practices মেনে চলা গুরুত্বপূর্ণ। এর মধ্যে সঠিক প্রসেস ডিজাইন, ত্রুটি হ্যান্ডলিং, পারফরম্যান্স অপটিমাইজেশন, NiFi Standard APIs ব্যবহার, টেস্টিং, ডকুমেন্টেশন, এবং নিরাপত্তা বিষয়ক বিবেচনা অন্তর্ভুক্ত। এগুলি কাস্টম প্রোসেসরগুলিকে আরও কার্যকরী, স্কেলেবল, এবং রক্ষণাবেক্ষণযোগ্য করে তোলে, যা NiFi সিস্টেমের সামগ্রিক কার্যক্ষমতা এবং কার্যকরীতা বৃদ্ধিতে সহায়ক।
common.read_more